package com.pipayshop.domain;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

/**
* 网店商品支付订单信息
* @TableName shop_order
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class ShopOrder implements Serializable {

    /**
    * 
    */
    @NotNull(message="[]不能为空")
    @ApiModelProperty("")
    private Long id;
    /**
    * 订单id
    */
    @NotBlank(message="[订单id]不能为空")
    @Size(max= 30,message="编码长度不能超过30")
    @ApiModelProperty("订单id")
    @Length(max= 30,message="编码长度不能超过30")
    private String orderId;
    /**
    * 支付id
    */

    @Size(max= 30,message="编码长度不能超过30")
    @ApiModelProperty("支付id")
    @Length(max= 30,message="编码长度不能超过30")
    private String paymentId;
    /**
    * 交易总金额
    */
    @ApiModelProperty("交易总金额")
    private BigDecimal transactionAmount;
    /**
    * 交易的pi总金额
    */
    @ApiModelProperty("交易的pi总金额")
    private BigDecimal piAmount;
    /**
    * 改价后的总金额
    */
    @ApiModelProperty("改价后的总金额")
    private BigDecimal discount;
    /**
    * 卖家店铺id
    */
    @NotBlank(message="[卖家店铺id]不能为空")
    @Size(max= 11,message="编码长度不能超过11")
    @ApiModelProperty("卖家店铺id")
    @Length(max= 11,message="编码长度不能超过11")
    private String shopId;
    /**
    * 买家用户id
    */
    @NotBlank(message="[买家用户id]不能为空")
    @Size(max= 52,message="编码长度不能超过52")
    @ApiModelProperty("买家用户id")
    @Length(max= 52,message="编码长度不能超过52")
    private String uid;
    /**
    * 买家的收货数据
    */
    @NotBlank(message="[买家的收货数据]不能为空")
    @ApiModelProperty("买家的收货数据")
    private String buyerDataId;
    /**
    * 订单状态（0：待支付1已支付2：已完成3：无线订单4：已评价）
    */
    @NotNull(message="[订单状态（0：待支付1已支付2：已完成3：无线订单4：已评价）]不能为空")
    @ApiModelProperty("订单状态（0：待支付1已支付2：已完成3：无线订单4：已评价）")
    private Integer orderStatus;
    /**
    * pi支付凭证
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("pi支付凭证")
    @Length(max= 255,message="编码长度不能超过255")
    private String certificateImag;
    /**
    * pi钱包地址
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("pi钱包地址")
    @Length(max= 255,message="编码长度不能超过255")
    private String piAddress;
    /**
    * 创建时间
    */
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
    * 修改时间
    */
    @ApiModelProperty("修改时间")
    private Date updateTime;
    /**
    * 0：未删除1：逻辑删除
    */
    @NotNull(message="[0：未删除1：逻辑删除]不能为空")
    @ApiModelProperty("0：未删除1：逻辑删除")
    private Integer delFlag;


    public ShopOrder(Long id, String orderId, String paymentId, BigDecimal transactionAmount, BigDecimal discount, String shopId, String uid, String buyerDataId, Integer orderStatus, Date createTime, Date updateTime, Integer delFlag) {
        this.id = id;
        this.orderId = orderId;
        this.transactionAmount = transactionAmount;
        this.discount = discount;
        this.shopId = shopId;
        this.uid = uid;
        this.buyerDataId = buyerDataId;
        this.orderStatus = orderStatus;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.delFlag = delFlag;
    }
}
